package thread;

/**
 * 多线程
 * 多线程允许多个代码片段"同时"运行。这里的同时并非真的同时发生，而是并发的。
 *
 * 创建线程有两种方式，第一种:
 * 继承Thread并重写run方法，在run方法中定义线程要执行的任务。
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
       Thread t1 = new MyThread1();
       Thread t2 = new MyThread2();
       /*
            线程的启动要调用start方法而非直接调用run方法!
            当start执行后线程纳入到线程调度器中，当第一次获取时间片时会自动开始执行run方法
        */
       t1.start();
       t2.start();
    }
}
/*
    优点:
    结构简单，适合使用匿名内部类创建时使用。
    缺点:
    1:存在继承冲突问题，原因:java是单继承的，这意味着继承了Thread就无法再继承其他类去复用
      方法。
    2:定义线程的同时重写了run方法来定义任务，这导致线程与任务存在必然的耦合关系不利于线程的
      重(chong)用

 */
class MyThread1 extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println("你是谁啊?");
        }
    }
}
class MyThread2 extends Thread{
    public void run(){
        for(int i=0;i<1000;i++){
            System.out.println("开门，查水表的!");
        }
    }
}


